package main

import (
	"flag"
	"log"
	"os"
	"runtime/pprof"
	"time"
)

var cpuprofile = flag.String("cpuprofile", "cpu.prof", "write cpu profile to file")

func cpuIntensiveTask() {
	// 执行一些计算密集型操作
	for i := 0; i < 100000000; i++ {
		_ = i * i
	}
}

func main() {
	flag.Parse()

	// 创建CPU性能分析文件
	f, err := os.Create(*cpuprofile)
	if err != nil {
		log.Fatal("could not create CPU profile: ", err)
	}
	defer f.Close()

	// 开始CPU性能分析
	if err := pprof.StartCPUProfile(f); err != nil {
		log.Fatal("could not start CPU profile: ", err)
	}
	defer pprof.StopCPUProfile()

	// 执行CPU密集型任务
	log.Println("开始执行CPU密集型任务...")
	start := time.Now()

	// 运行多个CPU密集型任务
	for i := 0; i < 5; i++ {
		cpuIntensiveTask()
		log.Printf("完成第 %d 个CPU密集型任务", i+1)
	}

	elapsed := time.Since(start)
	log.Printf("所有任务完成，耗时: %v", elapsed)

	// 使用方法:
	// 1. 运行程序: go run cpu_example.go
	// 2. 分析结果: go tool pprof cpu.prof
	// 3. 在pprof交互式命令行中输入: top, web, list等命令
}
